<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Cheshire-CSG: headers/Matrix4D.h Source File</title>

<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css" />

<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>

</head>
<body>
<div id="top"><!-- do not remove this div! -->


<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  
  
  <td style="padding-left: 0.5em;">
   <div id="projectname">Cheshire-CSG
   
   </div>
   
  </td>
  
  
  
 </tr>
 </tbody>
</table>
</div>

<!-- Generated by Doxygen 1.7.5.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
    </ul>
  </div>
<div class="header">
  <div class="headertitle">
<div class="title">headers/Matrix4D.h</div>  </div>
</div>
<div class="contents">
<a href="_matrix4_d_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 
<a name="l00013"></a>00013 <span class="preprocessor">#ifndef MATRIX4D_H</span>
<a name="l00014"></a>00014 <span class="preprocessor"></span><span class="preprocessor">#define MATRIX4D_H</span>
<a name="l00015"></a>00015 <span class="preprocessor"></span>
<a name="l00016"></a>00016 <span class="preprocessor">#include &lt;stdio.h&gt;</span>
<a name="l00017"></a>00017 <span class="preprocessor">#include &quot;<a class="code" href="vector_8h.html" title="class Vector header">vector.h</a>&quot;</span>
<a name="l00018"></a>00018 
<a name="l00026"></a><a class="code" href="class_matrix4_df.html">00026</a> <span class="keyword">class </span><a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a>
<a name="l00027"></a>00027 {
<a name="l00028"></a>00028         <span class="keyword">public</span>:
<a name="l00029"></a>00029           
<a name="l00030"></a>00030         <span class="keywordtype">float</span> v[16];
<a name="l00031"></a>00031 
<a name="l00035"></a>00035         <span class="keyword">inline</span> <a class="code" href="class_matrix4_df.html#a2fe54703eee28a4223a28eefa68296d7" title="Empty constructor.">Matrix4Df</a>();
<a name="l00036"></a>00036         
<a name="l00040"></a>00040         <span class="keyword">inline</span> <a class="code" href="class_matrix4_df.html#a2fe54703eee28a4223a28eefa68296d7" title="Empty constructor.">Matrix4Df</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> m00, <span class="keyword">const</span> <span class="keywordtype">float</span> m10, <span class="keyword">const</span> <span class="keywordtype">float</span> m20, <span class="keyword">const</span> <span class="keywordtype">float</span> m30,
<a name="l00041"></a>00041                                         <span class="keyword">const</span> <span class="keywordtype">float</span> m01, <span class="keyword">const</span> <span class="keywordtype">float</span> m11, <span class="keyword">const</span> <span class="keywordtype">float</span> m21, <span class="keyword">const</span> <span class="keywordtype">float</span> m31,
<a name="l00042"></a>00042                                         <span class="keyword">const</span> <span class="keywordtype">float</span> m02, <span class="keyword">const</span> <span class="keywordtype">float</span> m12, <span class="keyword">const</span> <span class="keywordtype">float</span> m22, <span class="keyword">const</span> <span class="keywordtype">float</span> m32,
<a name="l00043"></a>00043                                         <span class="keyword">const</span> <span class="keywordtype">float</span> m03, <span class="keyword">const</span> <span class="keywordtype">float</span> m13, <span class="keyword">const</span> <span class="keywordtype">float</span> m23, <span class="keyword">const</span> <span class="keywordtype">float</span> m33);
<a name="l00044"></a>00044         
<a name="l00045"></a>00045         <span class="keyword">inline</span> <a class="code" href="class_matrix4_df.html#a2fe54703eee28a4223a28eefa68296d7" title="Empty constructor.">Matrix4Df</a>(<span class="keyword">const</span> <a class="code" href="class_vector.html" title="Vector class.">Vector</a>&amp; vecX, <span class="keyword">const</span> <a class="code" href="class_vector.html" title="Vector class.">Vector</a>&amp; vecY, <span class="keyword">const</span> <a class="code" href="class_vector.html" title="Vector class.">Vector</a>&amp; vecZ, <span class="keyword">const</span> <a class="code" href="class_vector.html" title="Vector class.">Vector</a>&amp; vecT);
<a name="l00046"></a>00046         
<a name="l00050"></a>00050         <span class="keyword">inline</span> <a class="code" href="class_matrix4_df.html#a2fe54703eee28a4223a28eefa68296d7" title="Empty constructor.">Matrix4Df</a>(<span class="keyword">const</span> <span class="keywordtype">float</span>* val);
<a name="l00051"></a>00051         
<a name="l00055"></a>00055         <span class="keyword">inline</span> <a class="code" href="class_matrix4_df.html#a2fe54703eee28a4223a28eefa68296d7" title="Empty constructor.">Matrix4Df</a>(<span class="keyword">const</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a>&amp; m);
<a name="l00056"></a>00056 
<a name="l00060"></a>00060         <span class="keyword">inline</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a>&amp; <a class="code" href="class_matrix4_df.html#a2310ba8d71b1b3077b6df339beea6f8a" title="Assignment.">operator=</a>(<span class="keyword">const</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a>&amp; m);
<a name="l00061"></a>00061 
<a name="l00067"></a>00067         <span class="keyword">inline</span>       <span class="keywordtype">float</span>&amp; <a class="code" href="class_matrix4_df.html#ad7e75be328ebc701a3cba9a37a424939" title="Indexed access to the matrix elements.">operator()</a>(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> l, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> c);
<a name="l00068"></a>00068         
<a name="l00074"></a>00074         <span class="keyword">inline</span> <span class="keyword">const</span> <span class="keywordtype">float</span>&amp; <a class="code" href="class_matrix4_df.html#ad7e75be328ebc701a3cba9a37a424939" title="Indexed access to the matrix elements.">operator()</a>(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> l, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> c) <span class="keyword">const</span>;
<a name="l00075"></a>00075 
<a name="l00076"></a>00076 
<a name="l00080"></a>00080         <span class="keyword">inline</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a>&amp; <a class="code" href="class_matrix4_df.html#a167312c1af18eaf230dff051bde772a4" title="Elementwise addition assignement.">operator+=</a>(<span class="keyword">const</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a>&amp; m);
<a name="l00081"></a>00081         
<a name="l00085"></a>00085         <span class="keyword">inline</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a>&amp; <a class="code" href="class_matrix4_df.html#add536edec4c836d1f5a3fe02cbfd04ff" title="Elementwise substraction assignement.">operator-=</a>(<span class="keyword">const</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a>&amp; m);
<a name="l00086"></a>00086         
<a name="l00090"></a>00090         <span class="keyword">inline</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a>&amp; <a class="code" href="class_matrix4_df.html#a640aaeab5bd481cb386b4215a96e9b11" title="Matrix product (multiplication assignement)">operator*=</a>(<span class="keyword">const</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a>&amp; m);
<a name="l00091"></a>00091         
<a name="l00095"></a>00095         <span class="keyword">inline</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a>&amp; <a class="code" href="class_matrix4_df.html#a640aaeab5bd481cb386b4215a96e9b11" title="Matrix product (multiplication assignement)">operator*=</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> f);
<a name="l00096"></a>00096 
<a name="l00097"></a>00097 
<a name="l00101"></a>00101         <span class="keyword">friend</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a> <a class="code" href="class_matrix4_df.html#aa8b49e6b5d204995a97bdcdff56e1ff8" title="Elementwise addition.">operator+</a>(<span class="keyword">const</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a>&amp; m1, <span class="keyword">const</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a>&amp; m2);
<a name="l00102"></a>00102         
<a name="l00106"></a>00106         <span class="keyword">friend</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a> <a class="code" href="class_matrix4_df.html#a4cd11065198b040b1bc3e3026835b368" title="Elementwise substraction.">operator-</a>(<span class="keyword">const</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a>&amp; m1, <span class="keyword">const</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a>&amp; m2);
<a name="l00107"></a>00107         
<a name="l00111"></a>00111         <span class="keyword">friend</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a> <a class="code" href="class_matrix4_df.html#ac4aad75706ee141200622ba4c5b59aae" title="Matrix product.">operator*</a>(<span class="keyword">const</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a>&amp; m1, <span class="keyword">const</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a>&amp; m2);
<a name="l00112"></a>00112 
<a name="l00113"></a>00113 
<a name="l00117"></a>00117         <span class="keyword">friend</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a> <a class="code" href="class_matrix4_df.html#a4cd11065198b040b1bc3e3026835b368" title="Elementwise substraction.">operator-</a>(<span class="keyword">const</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a>&amp; m);
<a name="l00118"></a>00118 
<a name="l00119"></a>00119 
<a name="l00123"></a>00123         <span class="keyword">friend</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a> <a class="code" href="class_matrix4_df.html#ac4aad75706ee141200622ba4c5b59aae" title="Matrix product.">operator*</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> f, <span class="keyword">const</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a>&amp; m);
<a name="l00124"></a>00124         
<a name="l00128"></a>00128         <span class="keyword">friend</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a> <a class="code" href="class_matrix4_df.html#ac4aad75706ee141200622ba4c5b59aae" title="Matrix product.">operator*</a>(<span class="keyword">const</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a>&amp; m, <span class="keyword">const</span> <span class="keywordtype">float</span> f);
<a name="l00129"></a>00129 
<a name="l00130"></a>00130 
<a name="l00134"></a>00134         <span class="keyword">inline</span> <a class="code" href="class_vector.html" title="Vector class.">Vector</a> <a class="code" href="class_matrix4_df.html#a664d6f9bba8780ed3e1d95e963415035" title="Mixed matrix vector ops.">Mul</a>(<span class="keyword">const</span> <a class="code" href="class_vector.html" title="Vector class.">Vector</a>&amp; v, <span class="keyword">const</span> <span class="keywordtype">float</span> w) <span class="keyword">const</span>;
<a name="l00135"></a>00135         
<a name="l00139"></a>00139         <span class="keyword">inline</span> <a class="code" href="class_vector.html" title="Vector class.">Vector</a> <a class="code" href="class_matrix4_df.html#adc095474932b5b365bbd146d9be18577" title="Matrix/vector product.">MulPt</a>(<span class="keyword">const</span> <a class="code" href="class_vector.html" title="Vector class.">Vector</a>&amp; v) <span class="keyword">const</span>;
<a name="l00140"></a>00140         
<a name="l00144"></a>00144         <span class="keyword">inline</span> <a class="code" href="class_vector.html" title="Vector class.">Vector</a> <a class="code" href="class_matrix4_df.html#adfe24f1ecc992078c6408c4ebf8d6377" title="Matrix/vector product.">MulDir</a>(<span class="keyword">const</span> <a class="code" href="class_vector.html" title="Vector class.">Vector</a>&amp; v) <span class="keyword">const</span>;
<a name="l00145"></a>00145 
<a name="l00146"></a>00146 
<a name="l00150"></a>00150         <span class="keyword">inline</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a>&amp; <a class="code" href="class_matrix4_df.html#abe972ba129800a38927c1a1c6dfb8b54" title="Matrix transposition.">Transpose</a>();
<a name="l00151"></a>00151 
<a name="l00155"></a>00155         <span class="keyword">inline</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a> <a class="code" href="class_matrix4_df.html#a4e569837b04785ee487ed6ad6aad5bd7" title="Matrix inversion.">Invert</a>(<span class="keyword">const</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a>&amp; m);
<a name="l00156"></a>00156         
<a name="l00160"></a>00160         <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="class_matrix4_df.html#a4e569837b04785ee487ed6ad6aad5bd7" title="Matrix inversion.">Invert</a>();
<a name="l00161"></a>00161 
<a name="l00165"></a>00165         <span class="keyword">inline</span> <span class="keywordtype">float</span> <a class="code" href="class_matrix4_df.html#af5a26bc64adf73064f59a36ccb4ffb1c" title="Recovery of matrix trace.">Trace</a>() <span class="keyword">const</span>;
<a name="l00166"></a>00166         
<a name="l00170"></a>00170         <span class="keyword">inline</span> <span class="keywordtype">float</span> <a class="code" href="class_matrix4_df.html#a80fcdeff5b17e0af14720a3363e3ec08" title="Recovery of matrix determinant.">Determinant</a>() <span class="keyword">const</span>;
<a name="l00171"></a>00171 
<a name="l00172"></a>00172 
<a name="l00176"></a>00176         <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="class_matrix4_df.html#ad618c9a4c6085ead309d487c147b094f" title="Initialization to null matrix.">SetZero</a>();
<a name="l00177"></a>00177         
<a name="l00181"></a>00181         <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="class_matrix4_df.html#aeaa2ae0ce7fc69f6260a60a274135204" title="Initialization to identity matrix.">SetIdentity</a>();
<a name="l00182"></a>00182         
<a name="l00186"></a>00186         <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="class_matrix4_df.html#a7621000713ff579f426e362cb85c1e03" title="Initialization by setting all matrix elements to the same scalar value.">SetScalar</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> f);
<a name="l00187"></a>00187         
<a name="l00191"></a>00191         <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="class_matrix4_df.html#a69f275480d89821fc6db2215cff22f57" title="Initialization to a diagonal matrix.">SetDiagonal</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> f1, <span class="keyword">const</span> <span class="keywordtype">float</span> f2, <span class="keyword">const</span> <span class="keywordtype">float</span> f3, <span class="keyword">const</span> <span class="keywordtype">float</span> f4);
<a name="l00192"></a>00192 
<a name="l00193"></a>00193         <span class="keyword">inline</span> <span class="keywordtype">void</span> Print();
<a name="l00194"></a>00194 };
<a name="l00195"></a>00195 
<a name="l00196"></a>00196 
<a name="l00197"></a>00197 
<a name="l00198"></a>00198 
<a name="l00199"></a><a class="code" href="class_matrix4_df.html#ac760c789d0dc8b540b8b3784d4b2eeeb">00199</a> <span class="keyword">inline</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a> <a class="code" href="class_matrix4_df.html#a4e569837b04785ee487ed6ad6aad5bd7" title="Matrix inversion.">Matrix4Df::Invert</a>(<span class="keyword">const</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a>&amp; m)
<a name="l00200"></a>00200 {
<a name="l00201"></a>00201         <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a> inv;
<a name="l00202"></a>00202 
<a name="l00203"></a>00203         inv.v[0]  = m.v[5]*(m.v[15]*m.v[10]-m.v[11]*m.v[14]) + m.v[6]*(m.v[11]*m.v[13]-m.v[15]*m.v[9]) + m.v[7]*(m.v[14]*m.v[9]-m.v[10]*m.v[13]);
<a name="l00204"></a>00204         inv.v[1]  = m.v[1]*(m.v[11]*m.v[14]-m.v[15]*m.v[10]) + m.v[2]*(m.v[15]*m.v[9]-m.v[11]*m.v[13]) + m.v[3]*(m.v[10]*m.v[13]-m.v[14]*m.v[9]);       
<a name="l00205"></a>00205         inv.v[2]  = m.v[1]*(m.v[15]*m.v[6]-m.v[14]*m.v[7])   + m.v[2]*(m.v[7]*m.v[13]-m.v[5]*m.v[15])  + m.v[3]*(m.v[14]*m.v[5]-m.v[6]*m.v[13]);
<a name="l00206"></a>00206         inv.v[3]  = m.v[1]*(m.v[7]*m.v[10]-m.v[11]*m.v[6])   + m.v[2]*(m.v[11]*m.v[5]-m.v[9]*m.v[7])   + m.v[3]*(m.v[6]*m.v[9]-m.v[5]*m.v[10]); 
<a name="l00207"></a>00207         inv.v[4]  = m.v[4]*(m.v[11]*m.v[14]-m.v[15]*m.v[10]) + m.v[6]*(m.v[8]*m.v[15]-m.v[11]*m.v[12]) + m.v[7]*(m.v[12]*m.v[10]-m.v[14]*m.v[8]);
<a name="l00208"></a>00208         inv.v[5]  = m.v[0]*(m.v[15]*m.v[10]-m.v[11]*m.v[14]) + m.v[2]*(m.v[11]*m.v[12]-m.v[8]*m.v[15]) + m.v[3]*(m.v[14]*m.v[8]-m.v[12]*m.v[10]);
<a name="l00209"></a>00209         inv.v[6]  = m.v[0]*(m.v[14]*m.v[7]-m.v[15]*m.v[6])   + m.v[2]*(m.v[4]*m.v[15]-m.v[12]*m.v[7])  + m.v[3]*(m.v[6]*m.v[12]-m.v[4]*m.v[14]);
<a name="l00210"></a>00210         inv.v[7]  = m.v[0]*(m.v[11]*m.v[6]-m.v[7]*m.v[10])       + m.v[2]*(m.v[8]*m.v[7]-m.v[4]*m.v[11])   + m.v[3]*(m.v[4]*m.v[10]-m.v[8]*m.v[6]);
<a name="l00211"></a>00211         inv.v[8]  = m.v[4]*(m.v[15]*m.v[9]-m.v[11]*m.v[13])  + m.v[5]*(m.v[11]*m.v[12]-m.v[8]*m.v[15]) + m.v[7]*(m.v[8]*m.v[13]-m.v[9]*m.v[12]);
<a name="l00212"></a>00212         inv.v[9]  = m.v[0]*(m.v[11]*m.v[13]-m.v[15]*m.v[9])  + m.v[1]*(m.v[8]*m.v[15]-m.v[11]*m.v[12]) + m.v[3]*(m.v[9]*m.v[12]-m.v[8]*m.v[13]);
<a name="l00213"></a>00213         inv.v[10] = m.v[0]*(m.v[5]*m.v[15]-m.v[7]*m.v[13])   + m.v[1]*(m.v[12]*m.v[7]-m.v[4]*m.v[15])  + m.v[3]*(m.v[4]*m.v[13]-m.v[5]*m.v[12]);
<a name="l00214"></a>00214         inv.v[11] = m.v[0]*(m.v[9]*m.v[7]-m.v[11]*m.v[5])    + m.v[1]*(m.v[4]*m.v[11]-m.v[8]*m.v[7])   + m.v[3]*(m.v[5]*m.v[8]-m.v[4]*m.v[9]);
<a name="l00215"></a>00215         inv.v[12] = m.v[4]*(m.v[10]*m.v[13]-m.v[14]*m.v[9])  + m.v[5]*(m.v[14]*m.v[8]-m.v[12]*m.v[10]) + m.v[6]*(m.v[9]*m.v[12]-m.v[8]*m.v[13]);
<a name="l00216"></a>00216         inv.v[13] = m.v[0]*(m.v[14]*m.v[9]-m.v[10]*m.v[13])  + m.v[1]*(m.v[12]*m.v[10]-m.v[14]*m.v[8]) + m.v[2]*(m.v[8]*m.v[13]-m.v[9]*m.v[12]);
<a name="l00217"></a>00217         inv.v[14] = m.v[0]*(m.v[6]*m.v[13]-m.v[14]*m.v[5])   + m.v[1]*(m.v[4]*m.v[14]-m.v[6]*m.v[12])  + m.v[2]*(m.v[5]*m.v[12]-m.v[4]*m.v[13]);
<a name="l00218"></a>00218         inv.v[15] = m.v[0]*(m.v[5]*m.v[10]-m.v[6]*m.v[9])    + m.v[1]*(m.v[8]*m.v[6]-m.v[4]*m.v[10])   + m.v[2]*(m.v[4]*m.v[9]-m.v[5]*m.v[8]);
<a name="l00219"></a>00219 
<a name="l00220"></a>00220 
<a name="l00221"></a>00221         <span class="keywordtype">float</span> det = m(0, 0) * inv(0, 0) + m(0, 1) * inv(1, 0) + m(0, 2) * inv(2, 0) + m(0, 3) * inv(3, 0);
<a name="l00222"></a>00222         <span class="keywordtype">float</span> oodet = 1.0/ det;
<a name="l00223"></a>00223         inv.v[0]  *= oodet; 
<a name="l00224"></a>00224         inv.v[1]  *= oodet;
<a name="l00225"></a>00225         inv.v[2]  *= oodet;
<a name="l00226"></a>00226         inv.v[3]  *= oodet; 
<a name="l00227"></a>00227         inv.v[4]  *= oodet;
<a name="l00228"></a>00228         inv.v[5]  *= oodet;
<a name="l00229"></a>00229         inv.v[6]  *= oodet; 
<a name="l00230"></a>00230         inv.v[7]  *= oodet;
<a name="l00231"></a>00231         inv.v[8]  *= oodet;
<a name="l00232"></a>00232         inv.v[9]  *= oodet; 
<a name="l00233"></a>00233         inv.v[10] *= oodet;
<a name="l00234"></a>00234         inv.v[11] *= oodet;
<a name="l00235"></a>00235         inv.v[12] *= oodet; 
<a name="l00236"></a>00236         inv.v[13] *= oodet;
<a name="l00237"></a>00237         inv.v[14] *= oodet;
<a name="l00238"></a>00238         inv.v[15] *= oodet;
<a name="l00239"></a>00239 
<a name="l00240"></a>00240         <span class="keywordflow">return</span> inv;
<a name="l00241"></a>00241 }
<a name="l00242"></a>00242 
<a name="l00243"></a>00243 
<a name="l00244"></a>00244 
<a name="l00245"></a>00245 
<a name="l00246"></a><a class="code" href="class_matrix4_df.html#a2fe54703eee28a4223a28eefa68296d7">00246</a> <span class="keyword">inline</span> <a class="code" href="class_matrix4_df.html#a2fe54703eee28a4223a28eefa68296d7" title="Empty constructor.">Matrix4Df::Matrix4Df</a>() {}
<a name="l00247"></a>00247 
<a name="l00248"></a>00248 
<a name="l00249"></a>00249 
<a name="l00250"></a><a class="code" href="class_matrix4_df.html#a2c3d926646349c153b1e8e7fd5735b09">00250</a> <span class="keyword">inline</span> <a class="code" href="class_matrix4_df.html#a2fe54703eee28a4223a28eefa68296d7" title="Empty constructor.">Matrix4Df::Matrix4Df</a>(    <span class="keyword">const</span> <span class="keywordtype">float</span> m00, <span class="keyword">const</span> <span class="keywordtype">float</span> m10, <span class="keyword">const</span> <span class="keywordtype">float</span> m20, <span class="keyword">const</span> <span class="keywordtype">float</span> m30,
<a name="l00251"></a>00251                                                                 <span class="keyword">const</span> <span class="keywordtype">float</span> m01, <span class="keyword">const</span> <span class="keywordtype">float</span> m11, <span class="keyword">const</span> <span class="keywordtype">float</span> m21, <span class="keyword">const</span> <span class="keywordtype">float</span> m31,
<a name="l00252"></a>00252                                                                 <span class="keyword">const</span> <span class="keywordtype">float</span> m02, <span class="keyword">const</span> <span class="keywordtype">float</span> m12, <span class="keyword">const</span> <span class="keywordtype">float</span> m22, <span class="keyword">const</span> <span class="keywordtype">float</span> m32,
<a name="l00253"></a>00253                                                                 <span class="keyword">const</span> <span class="keywordtype">float</span> m03, <span class="keyword">const</span> <span class="keywordtype">float</span> m13, <span class="keyword">const</span> <span class="keywordtype">float</span> m23, <span class="keyword">const</span> <span class="keywordtype">float</span> m33)
<a name="l00254"></a>00254 {
<a name="l00255"></a>00255         v[0]  = m00;    v[1]  = m10;    v[2]  = m20;    v[3]  = m30;
<a name="l00256"></a>00256         v[4]  = m01;    v[5]  = m11;    v[6]  = m21;    v[7]  = m31;
<a name="l00257"></a>00257         v[8]  = m02;    v[9]  = m12;    v[10] = m22;    v[11] = m32;
<a name="l00258"></a>00258         v[12] = m03;    v[13] = m13;    v[14] = m23;    v[15] = m33;
<a name="l00259"></a>00259 }
<a name="l00260"></a>00260 
<a name="l00261"></a>00261 
<a name="l00262"></a>00262 
<a name="l00263"></a>00263 <span class="keyword">inline</span> <a class="code" href="class_matrix4_df.html#a2fe54703eee28a4223a28eefa68296d7" title="Empty constructor.">Matrix4Df::Matrix4Df</a>(<span class="keyword">const</span> <a class="code" href="class_vector.html" title="Vector class.">Vector</a>&amp; vecX, <span class="keyword">const</span> <a class="code" href="class_vector.html" title="Vector class.">Vector</a>&amp; vecY, <span class="keyword">const</span> <a class="code" href="class_vector.html" title="Vector class.">Vector</a>&amp; vecZ, <span class="keyword">const</span> <a class="code" href="class_vector.html" title="Vector class.">Vector</a>&amp; vecT)
<a name="l00264"></a>00264 {
<a name="l00265"></a>00265         v[0] = vecX[0];
<a name="l00266"></a>00266         v[1] = vecX[1];
<a name="l00267"></a>00267         v[2] = vecX[2];
<a name="l00268"></a>00268         v[3] = 0.0;
<a name="l00269"></a>00269 
<a name="l00270"></a>00270         v[4] = vecY[0];
<a name="l00271"></a>00271         v[5] = vecY[1];
<a name="l00272"></a>00272         v[6] = vecY[2];
<a name="l00273"></a>00273         v[7] = 0.0;
<a name="l00274"></a>00274 
<a name="l00275"></a>00275         v[8] = vecZ[0];
<a name="l00276"></a>00276         v[9] = vecZ[1];
<a name="l00277"></a>00277         v[10] = vecZ[2];
<a name="l00278"></a>00278         v[11] = 0.0;
<a name="l00279"></a>00279 
<a name="l00280"></a>00280         v[12] = vecT[0];
<a name="l00281"></a>00281         v[13] = vecT[1];
<a name="l00282"></a>00282         v[14] = vecT[2];
<a name="l00283"></a>00283         v[15] = 1.0;
<a name="l00284"></a>00284 }
<a name="l00285"></a>00285 
<a name="l00286"></a>00286 
<a name="l00287"></a>00287 
<a name="l00288"></a><a class="code" href="class_matrix4_df.html#a0634ea4d8f7312adaa5f780d42b8d5e3">00288</a> <span class="keyword">inline</span> <a class="code" href="class_matrix4_df.html#a2fe54703eee28a4223a28eefa68296d7" title="Empty constructor.">Matrix4Df::Matrix4Df</a>(<span class="keyword">const</span> <span class="keywordtype">float</span>* val)
<a name="l00289"></a>00289 {
<a name="l00290"></a>00290         v[0]  = val[0];         v[1]  = val[1];         v[2]  = val[2];         v[3]  = val[3];
<a name="l00291"></a>00291         v[4]  = val[4];         v[5]  = val[5];         v[6]  = val[6];         v[7]  = val[7];
<a name="l00292"></a>00292         v[8]  = val[8];         v[9]  = val[9];         v[10] = val[10];        v[11] = val[11];
<a name="l00293"></a>00293         v[12] = val[12];        v[13] = val[13];        v[14] = val[14];        v[15] = val[15];
<a name="l00294"></a>00294 }
<a name="l00295"></a>00295 
<a name="l00296"></a>00296 
<a name="l00297"></a>00297 
<a name="l00298"></a><a class="code" href="class_matrix4_df.html#a14ce89423a261129333c5bd1f0ff6644">00298</a> <span class="keyword">inline</span> <a class="code" href="class_matrix4_df.html#a2fe54703eee28a4223a28eefa68296d7" title="Empty constructor.">Matrix4Df::Matrix4Df</a>(<span class="keyword">const</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a>&amp; m)
<a name="l00299"></a>00299 {
<a name="l00300"></a>00300         v[0]  = m.v[0];         v[1]  = m.v[1];         v[2]  = m.v[2];         v[3]  = m.v[3];
<a name="l00301"></a>00301         v[4]  = m.v[4];         v[5]  = m.v[5];         v[6]  = m.v[6];         v[7]  = m.v[7];
<a name="l00302"></a>00302         v[8]  = m.v[8];         v[9]  = m.v[9];         v[10] = m.v[10];        v[11] = m.v[11];
<a name="l00303"></a>00303         v[12] = m.v[12];        v[13] = m.v[13];        v[14] = m.v[14];        v[15] = m.v[15];
<a name="l00304"></a>00304 }
<a name="l00305"></a>00305 
<a name="l00306"></a>00306 
<a name="l00307"></a>00307 
<a name="l00308"></a>00308 
<a name="l00309"></a><a class="code" href="class_matrix4_df.html#a2310ba8d71b1b3077b6df339beea6f8a">00309</a> <span class="keyword">inline</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a>&amp; <a class="code" href="class_matrix4_df.html#a2310ba8d71b1b3077b6df339beea6f8a" title="Assignment.">Matrix4Df::operator=</a>(<span class="keyword">const</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a>&amp; m)
<a name="l00310"></a>00310 {
<a name="l00311"></a>00311         v[0]  = m.v[0];         v[1]  = m.v[1];         v[2]  = m.v[2];         v[3]  = m.v[3];
<a name="l00312"></a>00312         v[4]  = m.v[4];         v[5]  = m.v[5];         v[6]  = m.v[6];         v[7]  = m.v[7];
<a name="l00313"></a>00313         v[8]  = m.v[8];         v[9]  = m.v[9];         v[10] = m.v[10];        v[11] = m.v[11];
<a name="l00314"></a>00314         v[12] = m.v[12];        v[13] = m.v[13];        v[14] = m.v[14];        v[15] = m.v[15];
<a name="l00315"></a>00315 
<a name="l00316"></a>00316         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
<a name="l00317"></a>00317 }
<a name="l00318"></a>00318 
<a name="l00319"></a>00319 
<a name="l00320"></a>00320 
<a name="l00321"></a>00321 
<a name="l00322"></a><a class="code" href="class_matrix4_df.html#ad7e75be328ebc701a3cba9a37a424939">00322</a> <span class="keyword">inline</span> <span class="keywordtype">float</span>&amp; <a class="code" href="class_matrix4_df.html#ad7e75be328ebc701a3cba9a37a424939" title="Indexed access to the matrix elements.">Matrix4Df::operator()</a>(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> l, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> c)
<a name="l00323"></a>00323 {
<a name="l00324"></a>00324         <span class="keywordflow">return</span> v[4 * c + l];
<a name="l00325"></a>00325 }
<a name="l00326"></a>00326 
<a name="l00327"></a>00327 
<a name="l00328"></a>00328 
<a name="l00329"></a><a class="code" href="class_matrix4_df.html#a4403f205c494937bd4992dc186466026">00329</a> <span class="keyword">inline</span> <span class="keyword">const</span> <span class="keywordtype">float</span>&amp; <a class="code" href="class_matrix4_df.html#ad7e75be328ebc701a3cba9a37a424939" title="Indexed access to the matrix elements.">Matrix4Df::operator()</a>(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> l, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> c)<span class="keyword"> const</span>
<a name="l00330"></a>00330 <span class="keyword"></span>{
<a name="l00331"></a>00331         <span class="keywordflow">return</span> v[4 * c + l];
<a name="l00332"></a>00332 }
<a name="l00333"></a>00333 
<a name="l00334"></a>00334 
<a name="l00335"></a>00335 
<a name="l00336"></a>00336 
<a name="l00337"></a><a class="code" href="class_matrix4_df.html#a167312c1af18eaf230dff051bde772a4">00337</a> <span class="keyword">inline</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a>&amp; <a class="code" href="class_matrix4_df.html#a167312c1af18eaf230dff051bde772a4" title="Elementwise addition assignement.">Matrix4Df::operator+=</a>(<span class="keyword">const</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a>&amp; m)
<a name="l00338"></a>00338 {
<a name="l00339"></a>00339         v[0]  += m.v[0];        v[1]  += m.v[1];        v[2]  += m.v[2];        v[3]  += m.v[3];
<a name="l00340"></a>00340         v[4]  += m.v[4];        v[5]  += m.v[5];        v[6]  += m.v[6];        v[7]  += m.v[7];
<a name="l00341"></a>00341         v[8]  += m.v[8];        v[9]  += m.v[9];        v[10] += m.v[10];       v[11] += m.v[11];
<a name="l00342"></a>00342         v[12] += m.v[12];       v[13] += m.v[13];       v[14] += m.v[14];       v[15] += m.v[15];
<a name="l00343"></a>00343 
<a name="l00344"></a>00344         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
<a name="l00345"></a>00345 }
<a name="l00346"></a>00346 
<a name="l00347"></a>00347 
<a name="l00348"></a><a class="code" href="class_matrix4_df.html#add536edec4c836d1f5a3fe02cbfd04ff">00348</a> <span class="keyword">inline</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a>&amp; <a class="code" href="class_matrix4_df.html#add536edec4c836d1f5a3fe02cbfd04ff" title="Elementwise substraction assignement.">Matrix4Df::operator-=</a>(<span class="keyword">const</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a>&amp; m)
<a name="l00349"></a>00349 {
<a name="l00350"></a>00350         v[0]  -= m.v[0];        v[1]  -= m.v[1];        v[2]  -= m.v[2];        v[3]  -= m.v[3];
<a name="l00351"></a>00351         v[4]  -= m.v[4];        v[5]  -= m.v[5];        v[6]  -= m.v[6];        v[7]  -= m.v[7];
<a name="l00352"></a>00352         v[8]  -= m.v[8];        v[9]  -= m.v[9];        v[10] -= m.v[10];       v[11] -= m.v[11];
<a name="l00353"></a>00353         v[12] -= m.v[12];       v[13] -= m.v[13];       v[14] -= m.v[14];       v[15] -= m.v[15];
<a name="l00354"></a>00354 
<a name="l00355"></a>00355         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
<a name="l00356"></a>00356 }
<a name="l00357"></a>00357 
<a name="l00358"></a>00358 
<a name="l00359"></a>00359 
<a name="l00360"></a><a class="code" href="class_matrix4_df.html#a640aaeab5bd481cb386b4215a96e9b11">00360</a> <span class="keyword">inline</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a>&amp; <a class="code" href="class_matrix4_df.html#a640aaeab5bd481cb386b4215a96e9b11" title="Matrix product (multiplication assignement)">Matrix4Df::operator*=</a>(<span class="keyword">const</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a>&amp; m)
<a name="l00361"></a>00361 {
<a name="l00362"></a>00362         <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a> tmp(*<span class="keyword">this</span> * m);
<a name="l00363"></a>00363         *<span class="keyword">this</span> = tmp;
<a name="l00364"></a>00364 
<a name="l00365"></a>00365         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
<a name="l00366"></a>00366 }
<a name="l00367"></a>00367 
<a name="l00368"></a>00368 
<a name="l00369"></a>00369 
<a name="l00370"></a><a class="code" href="class_matrix4_df.html#a9b55ffcbb7a04cf4be18d94f353de640">00370</a> <span class="keyword">inline</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a>&amp; <a class="code" href="class_matrix4_df.html#a640aaeab5bd481cb386b4215a96e9b11" title="Matrix product (multiplication assignement)">Matrix4Df::operator*=</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> f)
<a name="l00371"></a>00371 {
<a name="l00372"></a>00372         v[0]  *= f;     v[1]  *= f;     v[2]  *= f;     v[3]  *= f;
<a name="l00373"></a>00373         v[4]  *= f;     v[5]  *= f;     v[6]  *= f;     v[7]  *= f;
<a name="l00374"></a>00374         v[8]  *= f;     v[9]  *= f;     v[10] *= f;     v[11] *= f;
<a name="l00375"></a>00375         v[12] *= f;     v[13] *= f;     v[14] *= f;     v[15] *= f;
<a name="l00376"></a>00376 
<a name="l00377"></a>00377         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
<a name="l00378"></a>00378 }
<a name="l00379"></a>00379 
<a name="l00380"></a>00380 
<a name="l00381"></a>00381 
<a name="l00382"></a>00382 
<a name="l00383"></a><a class="code" href="class_matrix4_df.html#aa8b49e6b5d204995a97bdcdff56e1ff8">00383</a> <span class="keyword">inline</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a> operator+(<span class="keyword">const</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a>&amp; m1, <span class="keyword">const</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a>&amp; m2)
<a name="l00384"></a>00384 {
<a name="l00385"></a>00385         <span class="keywordflow">return</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a>(       m1.v[0]  + m2.v[0],             m1.v[1]  + m2.v[1],             m1.v[2]  + m2.v[2],             m1.v[3]  + m2.v[3],
<a name="l00386"></a>00386                                                 m1.v[4]  + m2.v[4],             m1.v[5]  + m2.v[5],             m1.v[6]  + m2.v[6],             m1.v[7]  + m2.v[7],
<a name="l00387"></a>00387                                                 m1.v[8]  + m2.v[8],             m1.v[9]  + m2.v[9],             m1.v[10] + m2.v[10],    m1.v[11] + m2.v[11],
<a name="l00388"></a>00388                                                 m1.v[12] + m2.v[12],    m1.v[13] + m2.v[13],    m1.v[14] + m2.v[14],    m1.v[15] + m2.v[15]);
<a name="l00389"></a>00389 }
<a name="l00390"></a>00390 
<a name="l00391"></a>00391 
<a name="l00392"></a>00392 
<a name="l00393"></a><a class="code" href="class_matrix4_df.html#a4cd11065198b040b1bc3e3026835b368">00393</a> <span class="keyword">inline</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a> operator-(<span class="keyword">const</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a>&amp; m1, <span class="keyword">const</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a>&amp; m2)
<a name="l00394"></a>00394 {
<a name="l00395"></a>00395         <span class="keywordflow">return</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a>(       m1.v[0]  - m2.v[0],             m1.v[1]  - m2.v[1],             m1.v[2]  - m2.v[2],             m1.v[3]  - m2.v[3],
<a name="l00396"></a>00396                                                 m1.v[4]  - m2.v[4],             m1.v[5]  - m2.v[5],             m1.v[6]  - m2.v[6],             m1.v[7]  - m2.v[7],
<a name="l00397"></a>00397                                                 m1.v[8]  - m2.v[8],             m1.v[9]  - m2.v[9],             m1.v[10] - m2.v[10],    m1.v[11] - m2.v[11],
<a name="l00398"></a>00398                                                 m1.v[12] - m2.v[12],    m1.v[13] - m2.v[13],    m1.v[14] - m2.v[14],    m1.v[15] - m2.v[15]);
<a name="l00399"></a>00399 }
<a name="l00400"></a>00400 
<a name="l00401"></a>00401 
<a name="l00402"></a>00402 
<a name="l00403"></a><a class="code" href="class_matrix4_df.html#ac4aad75706ee141200622ba4c5b59aae">00403</a> <span class="keyword">inline</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a> operator*(<span class="keyword">const</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a>&amp; m1, <span class="keyword">const</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a>&amp; m2)
<a name="l00404"></a>00404 {
<a name="l00405"></a>00405         <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a> out;
<a name="l00406"></a>00406 
<a name="l00407"></a>00407         out.v[0]  =  m2.v[3]*m1.v[12] + m2.v[2]*m1.v[8]  + m2.v[0]*m1.v[0]  + m1.v[4]*m2.v[1];
<a name="l00408"></a>00408         out.v[1]  =  m2.v[2]*m1.v[9]  + m2.v[1]*m1.v[5]  + m1.v[13]*m2.v[3] + m2.v[0]*m1.v[1];
<a name="l00409"></a>00409         out.v[2]  =  m2.v[2]*m1.v[10] + m2.v[3]*m1.v[14] + m2.v[0]*m1.v[2]  + m1.v[6]*m2.v[1];
<a name="l00410"></a>00410         out.v[3]  =  m2.v[2]*m1.v[11] + m1.v[15]*m2.v[3] + m2.v[1]*m1.v[7]  + m2.v[0]*m1.v[3];
<a name="l00411"></a>00411         out.v[4]  =  m2.v[4]*m1.v[0]  + m2.v[6]*m1.v[8]  + m2.v[7]*m1.v[12] + m2.v[5]*m1.v[4];
<a name="l00412"></a>00412         out.v[5]  =  m1.v[9]*m2.v[6]  + m1.v[1]*m2.v[4]  + m1.v[13]*m2.v[7] + m2.v[5]*m1.v[5];
<a name="l00413"></a>00413         out.v[6]  =  m2.v[4]*m1.v[2]  + m2.v[6]*m1.v[10] + m2.v[7]*m1.v[14] + m2.v[5]*m1.v[6];
<a name="l00414"></a>00414         out.v[7]  =  m1.v[3]*m2.v[4]  + m1.v[11]*m2.v[6] + m2.v[5]*m1.v[7]  + m1.v[15]*m2.v[7];
<a name="l00415"></a>00415         out.v[8]  =  m1.v[4]*m2.v[9]  + m2.v[8]*m1.v[0]  + m2.v[10]*m1.v[8] + m1.v[12]*m2.v[11];
<a name="l00416"></a>00416         out.v[9]  =  m2.v[9]*m1.v[5]  + m1.v[1]*m2.v[8]  + m2.v[10]*m1.v[9] + m1.v[13]*m2.v[11];
<a name="l00417"></a>00417         out.v[10] =  m1.v[6]*m2.v[9]  + m1.v[14]*m2.v[11]+ m2.v[8]*m1.v[2]  + m2.v[10]*m1.v[10];
<a name="l00418"></a>00418         out.v[11] =  m2.v[9]*m1.v[7]  + m1.v[15]*m2.v[11]+ m1.v[3]*m2.v[8]  + m2.v[10]*m1.v[11];
<a name="l00419"></a>00419         out.v[12] =  m2.v[14]*m1.v[8] + m1.v[4]*m2.v[13] + m2.v[15]*m1.v[12]+ m1.v[0]*m2.v[12];
<a name="l00420"></a>00420         out.v[13] =  m1.v[13]*m2.v[15]+ m1.v[9]*m2.v[14] + m2.v[13]*m1.v[5] + m1.v[1]*m2.v[12];
<a name="l00421"></a>00421         out.v[14] =  m1.v[6]*m2.v[13] + m2.v[14]*m1.v[10]+ m1.v[2]*m2.v[12] + m1.v[14]*m2.v[15];
<a name="l00422"></a>00422         out.v[15] =  m1.v[3]*m2.v[12] + m2.v[13]*m1.v[7] + m1.v[15]*m2.v[15]+ m1.v[11]*m2.v[14];
<a name="l00423"></a>00423 
<a name="l00424"></a>00424         <span class="keywordflow">return</span> out;
<a name="l00425"></a>00425 }
<a name="l00426"></a>00426 
<a name="l00427"></a>00427 
<a name="l00428"></a>00428 
<a name="l00429"></a>00429 
<a name="l00430"></a><a class="code" href="class_matrix4_df.html#a6e845817f2128ac90102744e21e98a27">00430</a> <span class="keyword">inline</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a> operator-(<span class="keyword">const</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a>&amp; m)
<a name="l00431"></a>00431 {
<a name="l00432"></a>00432         <span class="keywordflow">return</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a>(       - m.v[0],  - m.v[1],  - m.v[2],  - m.v[3],
<a name="l00433"></a>00433                                                 - m.v[4],  - m.v[5],  - m.v[6],  - m.v[7],
<a name="l00434"></a>00434                                                 - m.v[8],  - m.v[9],  - m.v[10], - m.v[11],
<a name="l00435"></a>00435                                                 - m.v[12], - m.v[13], - m.v[14], - m.v[15]);
<a name="l00436"></a>00436 }
<a name="l00437"></a>00437 
<a name="l00438"></a>00438 
<a name="l00439"></a>00439 
<a name="l00440"></a>00440 
<a name="l00441"></a><a class="code" href="class_matrix4_df.html#a58ee3262b5ce3fba49f1a3de3cac112e">00441</a> <span class="keyword">inline</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a> operator*(<span class="keyword">const</span> <span class="keywordtype">float</span> f, <span class="keyword">const</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a>&amp; m)
<a name="l00442"></a>00442 {
<a name="l00443"></a>00443         <span class="keywordflow">return</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a>(       f * m.v[0],             f * m.v[1],             f * m.v[2],             f * m.v[3],
<a name="l00444"></a>00444                                                 f * m.v[4],             f * m.v[5],             f * m.v[6],             f * m.v[7],
<a name="l00445"></a>00445                                                 f * m.v[8],             f * m.v[9],             f * m.v[10],    f * m.v[11],
<a name="l00446"></a>00446                                                 f * m.v[12],    f * m.v[13],    f * m.v[14],    f * m.v[15]);
<a name="l00447"></a>00447 }
<a name="l00448"></a>00448 
<a name="l00449"></a>00449 
<a name="l00450"></a>00450 
<a name="l00451"></a><a class="code" href="class_matrix4_df.html#aa310e684369ce51992642e9371f87228">00451</a> <span class="keyword">inline</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a> operator*(<span class="keyword">const</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a>&amp; m, <span class="keyword">const</span> <span class="keywordtype">float</span> f)
<a name="l00452"></a>00452 {
<a name="l00453"></a>00453         <span class="keywordflow">return</span> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a>(       f * m.v[0],             f * m.v[1],             f * m.v[2],             f * m.v[3],
<a name="l00454"></a>00454                                                 f * m.v[4],             f * m.v[5],             f * m.v[6],             f * m.v[7],
<a name="l00455"></a>00455                                                 f * m.v[8],             f * m.v[9],             f * m.v[10],    f * m.v[11],
<a name="l00456"></a>00456                                                 f * m.v[12],    f * m.v[13],    f * m.v[14],    f * m.v[15]);
<a name="l00457"></a>00457 }
<a name="l00458"></a>00458 
<a name="l00459"></a>00459 
<a name="l00460"></a>00460 
<a name="l00461"></a>00461 
<a name="l00462"></a><a class="code" href="class_matrix4_df.html#a664d6f9bba8780ed3e1d95e963415035">00462</a> <a class="code" href="class_vector.html" title="Vector class.">Vector</a> <a class="code" href="class_matrix4_df.html#a664d6f9bba8780ed3e1d95e963415035" title="Mixed matrix vector ops.">Matrix4Df::Mul</a>(<span class="keyword">const</span> <a class="code" href="class_vector.html" title="Vector class.">Vector</a>&amp; vec, <span class="keyword">const</span> <span class="keywordtype">float</span> w)<span class="keyword"> const</span>
<a name="l00463"></a>00463 <span class="keyword"></span>{
<a name="l00464"></a>00464         <span class="keywordtype">float</span> resW = (*this)(3, 0) * vec[0] + (*<span class="keyword">this</span>)(3, 1) * vec[1] + (*<span class="keyword">this</span>)(3, 2) * vec[2] + (*<span class="keyword">this</span>)(3, 3) * w;
<a name="l00465"></a>00465 
<a name="l00466"></a>00466         <span class="keywordflow">if</span>(resW)
<a name="l00467"></a>00467         {
<a name="l00468"></a>00468                 <span class="keywordtype">float</span> ooResW = float(1) / resW;
<a name="l00469"></a>00469 
<a name="l00470"></a>00470                 <span class="keywordflow">return</span> <a class="code" href="class_vector.html" title="Vector class.">Vector</a>(  ((*<span class="keyword">this</span>)(0, 0) * vec[0] + (*<span class="keyword">this</span>)(0, 1) * vec[1] + (*<span class="keyword">this</span>)(0, 2) * vec[2] + (*<span class="keyword">this</span>)(0, 3) * w) * ooResW,
<a name="l00471"></a>00471                                                         ((*<span class="keyword">this</span>)(1, 0) * vec[0] + (*<span class="keyword">this</span>)(1, 1) * vec[1] + (*<span class="keyword">this</span>)(1, 2) * vec[2] + (*<span class="keyword">this</span>)(1, 3) * w) * ooResW,
<a name="l00472"></a>00472                                                         ((*<span class="keyword">this</span>)(2, 0) * vec[0] + (*<span class="keyword">this</span>)(2, 1) * vec[1] + (*<span class="keyword">this</span>)(2, 2) * vec[2] + (*<span class="keyword">this</span>)(2, 3) * w) * ooResW);
<a name="l00473"></a>00473         }
<a name="l00474"></a>00474         <span class="keywordflow">else</span>
<a name="l00475"></a>00475         {
<a name="l00476"></a>00476                 <span class="keywordflow">return</span> <a class="code" href="class_vector.html" title="Vector class.">Vector</a>(  (*<span class="keyword">this</span>)(0, 0) * vec[0] + (*<span class="keyword">this</span>)(0, 1) * vec[1] + (*<span class="keyword">this</span>)(0, 2) * vec[2],
<a name="l00477"></a>00477                                                         (*<span class="keyword">this</span>)(1, 0) * vec[0] + (*<span class="keyword">this</span>)(1, 1) * vec[1] + (*<span class="keyword">this</span>)(1, 2) * vec[2],
<a name="l00478"></a>00478                                                         (*<span class="keyword">this</span>)(2, 0) * vec[0] + (*<span class="keyword">this</span>)(2, 1) * vec[1] + (*<span class="keyword">this</span>)(2, 2) * vec[2]);
<a name="l00479"></a>00479         }
<a name="l00480"></a>00480 }
<a name="l00481"></a>00481 
<a name="l00482"></a>00482 
<a name="l00483"></a>00483 
<a name="l00484"></a><a class="code" href="class_matrix4_df.html#adc095474932b5b365bbd146d9be18577">00484</a> <a class="code" href="class_vector.html" title="Vector class.">Vector</a> <a class="code" href="class_matrix4_df.html#adc095474932b5b365bbd146d9be18577" title="Matrix/vector product.">Matrix4Df::MulPt</a>(<span class="keyword">const</span> <a class="code" href="class_vector.html" title="Vector class.">Vector</a>&amp; vec)<span class="keyword"> const</span>
<a name="l00485"></a>00485 <span class="keyword"></span>{
<a name="l00486"></a>00486         <span class="keywordflow">return</span> <a class="code" href="class_vector.html" title="Vector class.">Vector</a>(  (*<span class="keyword">this</span>)(0, 0) * vec[0] + (*<span class="keyword">this</span>)(0, 1) * vec[1] + (*<span class="keyword">this</span>)(0, 2) * vec[2] + (*<span class="keyword">this</span>)(0, 3),
<a name="l00487"></a>00487                                                 (*<span class="keyword">this</span>)(1, 0) * vec[0] + (*<span class="keyword">this</span>)(1, 1) * vec[1] + (*<span class="keyword">this</span>)(1, 2) * vec[2] + (*<span class="keyword">this</span>)(1, 3),
<a name="l00488"></a>00488                                                 (*<span class="keyword">this</span>)(2, 0) * vec[0] + (*<span class="keyword">this</span>)(2, 1) * vec[1] + (*<span class="keyword">this</span>)(2, 2) * vec[2] + (*<span class="keyword">this</span>)(2, 3));
<a name="l00489"></a>00489 }
<a name="l00490"></a>00490 
<a name="l00491"></a>00491 
<a name="l00492"></a>00492 
<a name="l00493"></a><a class="code" href="class_matrix4_df.html#adfe24f1ecc992078c6408c4ebf8d6377">00493</a> <a class="code" href="class_vector.html" title="Vector class.">Vector</a> <a class="code" href="class_matrix4_df.html#adfe24f1ecc992078c6408c4ebf8d6377" title="Matrix/vector product.">Matrix4Df::MulDir</a>(<span class="keyword">const</span> <a class="code" href="class_vector.html" title="Vector class.">Vector</a>&amp; vec)<span class="keyword"> const</span>
<a name="l00494"></a>00494 <span class="keyword"></span>{
<a name="l00495"></a>00495         <span class="keywordflow">return</span> <a class="code" href="class_vector.html" title="Vector class.">Vector</a>(  (*<span class="keyword">this</span>)(0, 0) * vec[0] + (*<span class="keyword">this</span>)(0, 1) * vec[1] + (*<span class="keyword">this</span>)(0, 2) * vec[2],
<a name="l00496"></a>00496                                                 (*<span class="keyword">this</span>)(1, 0) * vec[0] + (*<span class="keyword">this</span>)(1, 1) * vec[1] + (*<span class="keyword">this</span>)(1, 2) * vec[2],
<a name="l00497"></a>00497                                                 (*<span class="keyword">this</span>)(2, 0) * vec[0] + (*<span class="keyword">this</span>)(2, 1) * vec[1] + (*<span class="keyword">this</span>)(2, 2) * vec[2]);
<a name="l00498"></a>00498 }
<a name="l00499"></a>00499 
<a name="l00500"></a>00500 
<a name="l00501"></a>00501 
<a name="l00502"></a>00502 
<a name="l00503"></a><a class="code" href="class_matrix4_df.html#abe972ba129800a38927c1a1c6dfb8b54">00503</a> <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a>&amp; <a class="code" href="class_matrix4_df.html#abe972ba129800a38927c1a1c6dfb8b54" title="Matrix transposition.">Matrix4Df::Transpose</a>()
<a name="l00504"></a>00504 {
<a name="l00505"></a>00505         <span class="keywordtype">float</span> t;
<a name="l00506"></a>00506 
<a name="l00507"></a>00507         t = (*this)(1, 0); (*this)(1, 0) = (*<span class="keyword">this</span>)(0, 1); (*this)(0, 1) = t;
<a name="l00508"></a>00508         t = (*this)(2, 0); (*this)(2, 0) = (*<span class="keyword">this</span>)(0, 2); (*this)(0, 2) = t;
<a name="l00509"></a>00509         t = (*this)(3, 0); (*this)(3, 0) = (*<span class="keyword">this</span>)(0, 3); (*this)(0, 3) = t;
<a name="l00510"></a>00510 
<a name="l00511"></a>00511         t = (*this)(2, 1); (*this)(2, 1) = (*<span class="keyword">this</span>)(1, 2); (*this)(1, 2) = t;
<a name="l00512"></a>00512         t = (*this)(3, 1); (*this)(3, 1) = (*<span class="keyword">this</span>)(1, 3); (*this)(1, 3) = t;
<a name="l00513"></a>00513 
<a name="l00514"></a>00514         t = (*this)(3, 2); (*this)(3, 2) = (*<span class="keyword">this</span>)(2, 3); (*this)(2, 3) = t;
<a name="l00515"></a>00515 
<a name="l00516"></a>00516         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
<a name="l00517"></a>00517 }
<a name="l00518"></a>00518 
<a name="l00519"></a>00519 
<a name="l00520"></a>00520 
<a name="l00521"></a>00521 
<a name="l00522"></a><a class="code" href="class_matrix4_df.html#a4e569837b04785ee487ed6ad6aad5bd7">00522</a> <span class="keywordtype">void</span> <a class="code" href="class_matrix4_df.html#a4e569837b04785ee487ed6ad6aad5bd7" title="Matrix inversion.">Matrix4Df::Invert</a>()
<a name="l00523"></a>00523 {
<a name="l00524"></a>00524         <a class="code" href="class_matrix4_df.html" title="Matri4Df class.">Matrix4Df</a> inv = <a class="code" href="class_matrix4_df.html#a4e569837b04785ee487ed6ad6aad5bd7" title="Matrix inversion.">Matrix4Df::Invert</a>(*<span class="keyword">this</span>);
<a name="l00525"></a>00525         *<span class="keyword">this</span> = inv;
<a name="l00526"></a>00526 }
<a name="l00527"></a>00527 
<a name="l00528"></a>00528 
<a name="l00529"></a>00529 
<a name="l00530"></a><a class="code" href="class_matrix4_df.html#af5a26bc64adf73064f59a36ccb4ffb1c">00530</a> <span class="keywordtype">float</span> <a class="code" href="class_matrix4_df.html#af5a26bc64adf73064f59a36ccb4ffb1c" title="Recovery of matrix trace.">Matrix4Df::Trace</a>()<span class="keyword"> const</span>
<a name="l00531"></a>00531 <span class="keyword"></span>{
<a name="l00532"></a>00532         <span class="keywordflow">return</span> (*<span class="keyword">this</span>)(0, 0) + (*<span class="keyword">this</span>)(1, 1) + (*<span class="keyword">this</span>)(2, 2) + (*<span class="keyword">this</span>)(3, 3);
<a name="l00533"></a>00533 }
<a name="l00534"></a>00534 
<a name="l00535"></a>00535 
<a name="l00536"></a>00536 
<a name="l00537"></a><a class="code" href="class_matrix4_df.html#a80fcdeff5b17e0af14720a3363e3ec08">00537</a> <span class="keywordtype">float</span> <a class="code" href="class_matrix4_df.html#a80fcdeff5b17e0af14720a3363e3ec08" title="Recovery of matrix determinant.">Matrix4Df::Determinant</a>()<span class="keyword"> const</span>
<a name="l00538"></a>00538 <span class="keyword"></span>{
<a name="l00539"></a>00539         <span class="keywordtype">float</span> d[4];
<a name="l00540"></a>00540 
<a name="l00541"></a>00541         d[0]  = v[5]*(v[15]*v[10]-v[11]*v[14]) + v[6]*(v[11]*v[13]-v[15]*v[9]) + v[7]*(v[14]*v[9]-v[10]*v[13]);
<a name="l00542"></a>00542         d[1]  = v[1]*(v[11]*v[14]-v[15]*v[10]) + v[2]*(v[15]*v[9]-v[11]*v[13]) + v[3]*(v[10]*v[13]-v[14]*v[9]); 
<a name="l00543"></a>00543         d[2]  = v[1]*(v[15]*v[6]-v[14]*v[7])   + v[2]*(v[7]*v[13]-v[5]*v[15])  + v[3]*(v[14]*v[5]-v[6]*v[13]);
<a name="l00544"></a>00544         d[3]  = v[1]*(v[7]*v[10]-v[11]*v[6])   + v[2]*(v[11]*v[5]-v[9]*v[7])   + v[3]*(v[6]*v[9]-v[5]*v[10]);   
<a name="l00545"></a>00545 
<a name="l00546"></a>00546         <span class="keywordflow">return</span> v[0] * d[0] + v[4] * d[1] + v[8] * d[2] + v[12] * d[3];
<a name="l00547"></a>00547 }
<a name="l00548"></a>00548 
<a name="l00549"></a>00549 
<a name="l00550"></a>00550 
<a name="l00551"></a>00551 
<a name="l00552"></a><a class="code" href="class_matrix4_df.html#ad618c9a4c6085ead309d487c147b094f">00552</a> <span class="keywordtype">void</span> <a class="code" href="class_matrix4_df.html#ad618c9a4c6085ead309d487c147b094f" title="Initialization to null matrix.">Matrix4Df::SetZero</a>()
<a name="l00553"></a>00553 {
<a name="l00554"></a>00554         v[0]  = float(0);       v[1]  = float(0);       v[2]  = float(0);       v[3]  = float(0);
<a name="l00555"></a>00555         v[4]  = float(0);       v[5]  = float(0);       v[6]  = float(0);       v[7]  = float(0);
<a name="l00556"></a>00556         v[8]  = float(0);       v[9]  = float(0);       v[10] = float(0);       v[11] = float(0);
<a name="l00557"></a>00557         v[12] = float(0);       v[13] = float(0);       v[14] = float(0);       v[15] = float(0);
<a name="l00558"></a>00558 }
<a name="l00559"></a>00559 
<a name="l00560"></a>00560 
<a name="l00561"></a><a class="code" href="class_matrix4_df.html#aeaa2ae0ce7fc69f6260a60a274135204">00561</a> <span class="keywordtype">void</span> <a class="code" href="class_matrix4_df.html#aeaa2ae0ce7fc69f6260a60a274135204" title="Initialization to identity matrix.">Matrix4Df::SetIdentity</a>()
<a name="l00562"></a>00562 {
<a name="l00563"></a>00563         v[0]  = float(1);       v[1]  = float(0);       v[2]  = float(0);       v[3]  = float(0);
<a name="l00564"></a>00564         v[4]  = float(0);       v[5]  = float(1);       v[6]  = float(0);       v[7]  = float(0);
<a name="l00565"></a>00565         v[8]  = float(0);       v[9]  = float(0);       v[10] = float(1);       v[11] = float(0);
<a name="l00566"></a>00566         v[12] = float(0);       v[13] = float(0);       v[14] = float(0);       v[15] = float(1);
<a name="l00567"></a>00567 }
<a name="l00568"></a>00568 
<a name="l00569"></a>00569 
<a name="l00570"></a>00570 
<a name="l00571"></a><a class="code" href="class_matrix4_df.html#a7621000713ff579f426e362cb85c1e03">00571</a> <span class="keywordtype">void</span> <a class="code" href="class_matrix4_df.html#a7621000713ff579f426e362cb85c1e03" title="Initialization by setting all matrix elements to the same scalar value.">Matrix4Df::SetScalar</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> f)
<a name="l00572"></a>00572 {
<a name="l00573"></a>00573         v[0]  = f;      v[1]  = f;      v[2]  = f;      v[3]  = f;
<a name="l00574"></a>00574         v[4]  = f;      v[5]  = f;      v[6]  = f;      v[7]  = f;
<a name="l00575"></a>00575         v[8]  = f;      v[9]  = f;      v[10] = f;      v[11] = f;
<a name="l00576"></a>00576         v[12] = f;      v[13] = f;      v[14] = f;      v[15] = f;
<a name="l00577"></a>00577 }
<a name="l00578"></a>00578 
<a name="l00579"></a>00579 
<a name="l00580"></a>00580 
<a name="l00581"></a><a class="code" href="class_matrix4_df.html#a69f275480d89821fc6db2215cff22f57">00581</a> <span class="keywordtype">void</span> <a class="code" href="class_matrix4_df.html#a69f275480d89821fc6db2215cff22f57" title="Initialization to a diagonal matrix.">Matrix4Df::SetDiagonal</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> f1, <span class="keyword">const</span> <span class="keywordtype">float</span> f2, <span class="keyword">const</span> <span class="keywordtype">float</span> f3, <span class="keyword">const</span> <span class="keywordtype">float</span> f4)
<a name="l00582"></a>00582 {
<a name="l00583"></a>00583         v[0]  = f1;             v[1]  = float(0);       v[2]  = float(0);       v[3]  = float(0);
<a name="l00584"></a>00584         v[4]  = float(0);       v[5]  = f2;             v[6]  = float(0);       v[7]  = float(0);
<a name="l00585"></a>00585         v[8]  = float(0);       v[9]  = float(0);       v[10] = f3;             v[11] = float(0);
<a name="l00586"></a>00586         v[12] = float(0);       v[13] = float(0);       v[14] = float(0);       v[15] = f4;
<a name="l00587"></a>00587 }
<a name="l00588"></a>00588 
<a name="l00589"></a>00589 
<a name="l00590"></a>00590 <span class="keywordtype">void</span> Matrix4Df::Print(){
<a name="l00591"></a>00591         <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i =0; i&lt;4;i++){
<a name="l00592"></a>00592                 <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j=0;j&lt;4;j++){
<a name="l00593"></a>00593                         fprintf(stderr,<span class="stringliteral">&quot;%f &quot;</span>,v[i*4+j]);
<a name="l00594"></a>00594                 }
<a name="l00595"></a>00595                 fprintf(stderr,<span class="stringliteral">&quot;\n&quot;</span>);
<a name="l00596"></a>00596         }
<a name="l00597"></a>00597         fprintf(stderr,<span class="stringliteral">&quot;\n&quot;</span>);
<a name="l00598"></a>00598 }
<a name="l00599"></a>00599 
<a name="l00600"></a>00600 <span class="preprocessor">#endif</span>
</pre></div></div>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Friends</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>



<hr class="footer"/><address class="footer"><small>
Generated on Sun Oct 2 2011 17:01:12 for Cheshire-CSG by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.7.5.1
</small></address>

</body>
</html>
